package com.yunpeng.aidevice.permission.service;

import com.yunpeng.aidevice.common.vo.FunctionPermissionVO;

import java.util.List;

/**
 * IPermissionOuterService
 *
 * @author : Moore(hemw)
 * @date : 2020-04-07
 */
public interface IPermissionOuterService {


    /**
     * 获取功能权限树
     *
     * @param userCode 指定的用户代码
     * @return
     */
    List<FunctionPermissionVO> getUsersPermissionTree(String userCode);

    /**
     * 检查指定用户是否有指定功能权限操作权限
     *
     * @param nodeLocation 功能路径
     * @param userCode     用户代码
     * @return
     */
    Boolean checkPermission(String nodeLocation, String userCode);

    /**
     * 清理用户权限缓存
     *
     * @param userCode 用户代码
     */
    void clearUserCache(String userCode);

    /**
     * 清理一批用户权限缓存
     *
     * @param userCodes 用户代码集合
     */
    void clearUsersCache(List<String> userCodes);

    /**
     * 清理整个权限缓存map
     *
     * @param operatorCode 操作人代码
     */
    void clearWholePermissionCache(String operatorCode);

    /**
     * 验证用户编辑用户信息权限
     *
     * @param userCode
     * @param loginUserCode
     * @return
     */
    Boolean checkUpdateAnotherUserInfo(String userCode, String loginUserCode);

    /**
     * 验证用户是否具有某种角色
     *
     * @param roleCode 角色代码
     * @param userCode 用户代码
     * @return
     */
    Boolean checkUserRole(String roleCode, String userCode);
}
